;; Questoes 1 e 3 da Prova de MC336 do aluno Tiago Falcao
;; RA 046802
(defun addunificadas (lista termo)
"Retorna a Lista acrecida com o Termo"
	(if (null termo) lista
	(if (null lista) (list termo)
	(if (eql (car (car lista)) (car termo)) (cons (list (car termo) (+ (cadr termo) (cadr (car lista)))) (cdr lista))
	(cons (car lista)(addunificadas (cdr lista) termo))
	)
	)
	)
)


(defun unifica (lista)
"Unifica as sub-listas de mesmo nome"
	(do* ((unificada (list (car lista)) (addunificadas unificada (car resto)))
		(resto (cdr lista) (cdr resto)))
		((null resto) unificada)
	)
)

(defun os-mais-vend (lista)
"Retorna os 5 intens mais vendidos"
	(let ((uni (sort (unifica lista) #'(lambda (x y) (> (cadr x) (cadr y))))))
		(list (car (car uni)) 
			(car (cadr uni)) 
			(car (caddr uni)) 
			(car (cadddr uni)) 
			(car (car (cddddr uni)))
		)
	)
) 
;;---------------------
(defun juntap-i (pi1 pi2)
	(if (null pi1) pi2
	(if (null pi2) pi1
	(list (append (car pi1) (car pi2)) (append (cadr pi1) (cadr pi2)))
	)
	)
)

(defun p-i (lista)
(if (null lista) nil
	(if (listp (car lista)) (juntap-i (p-i (car lista)) (p-i (cdr lista)))
		(if (evenp (car lista)) (juntap-i (list (list (car lista)) nil) (p-i (cdr lista)))
			 (juntap-i (list nil (list (car lista))) (p-i (cdr lista)))
		)
	)
))

